package paidaxing.blog.comment.service;

import paidaxing.blog.comment.dto.CommentDTO;
import paidaxing.blog.comment.dto.request.CommentRequestDTO;
import paidaxing.blog.comment.dto.response.CommentResponseDTO;
import java.util.List;

public interface CommentService {
    /**
     * 发布评论
     *
     * @param commentRequestDTO 评论请求DTO
     * @return 评论DTO
     */
    CommentDTO createComment(CommentRequestDTO commentRequestDTO);

    /**
     * 获取评论详情
     *
     * @param id 评论ID
     * @return 评论DTO
     */
    CommentDTO getCommentById(Long id);

    /**
     * 更新评论
     *
     * @param id 评论ID
     * @param commentRequestDTO 评论请求DTO
     * @return 评论DTO
     */
    CommentDTO updateComment(Long id, CommentRequestDTO commentRequestDTO);

    /**
     * 删除评论
     *
     * @param id 评论ID
     * @return 是否成功
     */
    boolean deleteComment(Long id);

    /**
     * 根据文章ID获取评论列表（树形结构）
     *
     * @param postId 文章ID
     * @return 评论树
     */
    List<CommentResponseDTO> getCommentsTreeByPostId(Long postId);

    /**
     * 获取评论列表（分页）
     *
     * @param postId 文章ID
     * @param page 页码
     * @param size 每页数量
     * @return 评论列表
     */
    List<CommentDTO> getCommentsByPostId(Long postId, Integer page, Integer size);
}